#!/usr/bin/env bash
# 安装 gost (Go-Gost v3) 到 /usr/local/bin/gost
set -Eeuo pipefail

type log_info >/dev/null 2>&1 || { echo "[install_gost] _common.sh 未加载"; exit 1; }

install_gost() {
  ensure_root

  # 默认版本
  local default_ver="v3.2.4"
  read -rp "输入要安装的 gost 版本（默认 ${default_ver}，例如 v3.2.4）: " ver
  ver="${ver:-$default_ver}"

  # 架构映射
  local arch="$(uname -m)"
  case "$arch" in
    x86_64|amd64) arch="amd64" ;;
    aarch64|arm64) arch="arm64" ;;
    *) log_error "暂不支持的架构: $arch"; return 1 ;;
  esac

  local file="gost_${ver#v}_linux_${arch}.tar.gz"
  local local_url="https://node.daytool.cn/node/sh/opt/packages/${file}"
  local gh_url="https://github.com/go-gost/gost/releases/download/${ver}/${file}"

  local tmpdir; tmpdir="$(mktemp -d /tmp/gost.XXXXXX)"
  trap 'rm -rf "$tmpdir"' EXIT

  # 下载逻辑：优先本地 → GitHub
  log_info "尝试从本地源下载：$local_url"
  if ! curl -fsSL --retry 2 --connect-timeout 5 "$local_url" -o "${tmpdir}/${file}"; then
    log_warn "本地源下载失败，回退到 GitHub：$gh_url"
    curl -fL --retry 3 "$gh_url" -o "${tmpdir}/${file}"
  fi

  log_info "解压：$file"
  tar -xzf "${tmpdir}/${file}" -C "${tmpdir}"

  # 移动到系统路径
  chmod +x "${tmpdir}/gost"
  mv -f "${tmpdir}/gost" /usr/local/bin/gost

  if gost -V; then
    log_info "gost 安装成功：$(gost -V)"
  else
    log_warn "gost 已放置到 /usr/local/bin/gost，但未能正确运行。"
  fi
}
